package sample;

import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

public class DebugReactorDemo {
    public static void main(String[] args) {
        /*
        reactor.Flux.Range.1 是自动生成的日志 类别（category），以防你在操作链中多次使用 同一个操作符。通过它你可以分辨出来是哪个操作符的事件（这里是 range 的）。 你可以调用 log(String) 方法用自定义的类别替换这个标识符。在几个用于分隔的字符之后， 打印出了实际的事件。这里是一个 onSubscribe 调用、一个 request 调用、三个 onNext 调用， 以及一个 cancel 调用。对于第一行的 onSubscribe，我们知道了 Subscriber 的具体实现， 通常与操作符指定的实现是一致的，在方括号内有一些额外信息，包括这个操作符是否能够 通过同步或异步融合（fusion，具体见附录 [microfusion]）的方式进行自动优化。
        第二行，我们可以看到是一个由下游传播上来的个数无限的请求。
        然后 range 一下发出三个值。
        最后一行，我们看到了 cancel()。
         */
        Flux<Integer> flux = Flux.range(1, 10)
                .log()
                .take(3);
        flux.subscribe();
    }
//    private Mono<String> scatterAndGather(Flux<String> urls) {
//        return urls.flatMap(url -> doRequest(url))
//                .single();
//    }
}
